Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

127
Vistas
Push objects from array to mongoose array model field | MongoDB Mongoose

I am little confused how to push all objects from array to mongoose array field. Do I have to use loop?

I have created an inventory model where itemlist is an array of itemschema field

const itemlistSchema: mongoose.Schema = new Schema({
  item: {
    type: Schema.Types.ObjectId,
    ref: "Item",
    required: true,
  },
  quantity: {
    type: Number,
    required: true,
  },
});

const inventorySchema: mongoose.Schema = new Schema(
  {
    code: {
      type: String,
      trim: true,
      required: true,
      unique: true,
    },
    user: {
      type: Schema.Types.ObjectId,
      ref: "User",
      required: true,
    },
    shop: {
      type: Schema.Types.ObjectId,
      ref: "Shop",
      required: true,
      unique: true,
    },
    itemlist: [itemlistSchema],
  },
  { timestamps: true }
);

module.exports = retailMongoose.model(
  "Inventory",
  inventorySchema,
  "Inventory"
);

If I get an array from frontend or as input how can I update this inventory with items.

Suppose I get this array from frontend:

shop_id = "uniqueShopId"

items = [
{
item:"itemId",
quantity:20
},
{
item:"another itemID",
quantity:11
}
]

How can I push this to my inventory model. Every shop will have single inventory , so I can find inventory by shop_id.

Can any one help please? Thank you ❤️

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

I have created this solution which works for me.

 //add items to inventory.itemslist
    let itemsList = inventory.itemlist;
    // console.log("Db itemsList ==>", itemsList);

    //check if item already exists in inventory
    for (let i = 0; i < items.length; i++) {
      const item = items[i];
      // find item in inventory
      var itemInInventory = itemsList.findIndex(
        (anitemInInventory: any) =>
          //   console.log(anitemInInventory.item_id.toHexString(), item.item_id)
          anitemInInventory.item_id.toHexString() === item.item_id
      );
      //   console.log("itemInInventory ==>", itemInInventory);
    }

    console.log("Existing Item ==>", itemInInventory);
    if (itemInInventory > -1) {
      //send error if item already exists
      return res.throw_4906_ITEM_ALREADY_EXISTS(
        "Item already exists inside inventory. Cannot add again ,you can update it"
      );
    }
    items.forEach((item: any) => {
      if (!item.item_id || !item.quantity) {
        return res.throw_5005_INCOMPLETE_REQUIRED_FIELDS(
          "Adding items invalid config"
        );
      }

      itemsList.push({
        item_id: item.item_id,
        quantity: parseInt(item.quantity),
      });
    });
    inventory.itemlist = itemsList;
    await inventory.save();
    return res.throw_2101_INVENTORY_UPDATE_SUCCESS("Items added to inventory", {
      inventory,
    });
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda